/*
 * Copyright (c) 2022  by Junzhao
 * THIS FILE IS PART OF JAVASE Song Huongkang PROJECT
 * All Rights Reserved.
 */

package 举例;

import org.junit.Test;

import java.util.*;

/**
 * @description 泛型使用举例
 *      泛型不能是基本数据类型
 *      集合接口与集合类JDK5之后都修改为带泛型的结构
 *      实例化之前可以指明具体的泛型类型
 *      指明之后在集合类和集合接口中凡是定义类或接口时，
 *          内部结构（方法、构造器、属性之类）需要用到类的泛型的位置都指定为实例化时指定的泛型类型
 *          比如add(E e) --> add(Integer e)
 *
 *
 * @author 俊昭
 * @date 2022/4/21
*/
public class GenericTest {
    @Test
    public void test01(){
        ArrayList<Integer> list = new ArrayList<>();

        list.add(78);
        list.add(75);
        list.add(78);
        list.add(74);
        list.add(77);
//        list.add("");// 需要的类型:
//        Integer
//        提供的类型:
//        String    编译不通过
        for (Integer integer : list) {
            System.out.println(integer);
        }
        System.out.println();

        Iterator<Integer> iterator = list.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());

        }

    }
    @Test
    public void test02(){
        HashMap<Integer, String> map = new HashMap<>();
        map.put(1," 一 ");
        map.put(3," 三 ");
        map.put(5," 五");
        map.put(6," 六 ");
        map.put(7," 七 ");
//        map.put("八"," 七 ");      需要的类型:Integer 提供的类型:String
//        map.put(7,7);             需要的类型:String 提供的类型:int

        Set<Integer> set = map.keySet();
        for (Integer integer : set) {
            System.out.println(integer + " -->" + map.get(integer));
        }

        Set<Map.Entry<Integer, String>> set1 = map.entrySet();
        for (Map.Entry<Integer, String> entry : set1) {
            System.out.println(entry);
        }


    }
}